#ifndef _SYS_FAN_NUM_H_
#define _SYS_FAN_NUM_H_

#include "FanObj.h"
#include "SysTypes.h"

#define NUM_VTABLE(self)   ((FanNumVTable*)self.vtable)


extern Type*    Num_classType;
extern VTable*  Num_classVTable;


/* [sys::Num] Attributes */
struct FanNum
{
  FanObj        super;
};


/* [sys::Num] Virtual-table */
typedef struct FanNumVTable
{
  FanObjVTable  super;
} FanNumVTable;


/* [sys::Num] Methods and fields */
Int             Num_toInt(Num self);
Float           Num_toFloat(Num self);
Decimal*        Num_toDecimal(Num self);
Str*            Num_localeDecimal(void);
Str*            Num_localeGrouping(void);
Str*            Num_localeMinus(void);
Str*            Num_localePercent(void);
Str*            Num_localePosInf(void);
Str*            Num_localeNegInf(void);
Str*            Num_localeNaN(void);


/* [sys::Num] Type-system functions */
Type*           Num_initType(void);
VTable*         Num_initVTable(void);
void            Num_initStatic(void);


#endif
